<?php
ob_start(); // кеширование вывода =)

@error_reporting(E_ALL); 
@ini_set('display_errors', true);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL);
@ini_set('error_log', './php.log');

$admin_email = 'admin@mail.ru';

include './mrim.class.php';

$config = array(
    'status_uri'   => 'status_chat', // статус бота
    'status_title' => 'Готов поболтать!', // заголовок статуса (до 16 символов)
    'status_descr' => 'Со всеми! Я же бот! И отсылаю ваши сообщения вам обратно ))))' // описание статуса (до 255 символов)
);

$mra = new mrim($config);

$mra->debug = true; // режим отладки

if(!$mra->connect('login@mail.ru', 'password')) // авторизация на сервере
    echo $mra->error;


while( $mra->isConnected() )
{
    $mra->pingServer(); // пинг сервера
    $msg = $mra->readMessages(); // считывание сообщений

    if($msg != false) echo var_export($msg, true)."\n\n"; // так на всякий случай =)

    if(isset($msg['from']) && isset($msg['message']) && isset($msg['type']) && $msg['from'] != '' && $msg['message'] != '' && $msg['type'] != '')
    {
        if($msg['type'] == 'message' || $msg['type'] == 'offline')
        {
            $msg['message'] = trim($msg['message']);

            $mra->setTyping($msg['from']); // отправка уведомления о наборе текста
            $mra->sendMessage($msg['from'], 'Вы прислали:'."\n\n".$msg['message']); // отправка сообщения обратно =)

            // отключить бота, если пришла команда kill
            if( $msg['message'] == 'kill' && $msg['from'] == $admin_email ) break;

            // просмотр анкеты
            if( substr(trim($msg['message']), 0, 4) == 'info' )
            {
                $msg['message'] = substr(trim($msg['message']), 5);
                $mra->getUserInfo($msg['message']);
                $mra->sendMessage($msg['from'], 'Получен запрос на получение анкеты пользователя.');
            }

            // смена статуса
            if( substr(trim($msg['message']), 0, 6) == 'status' && $msg['from'] == $admin_email )
            {
                $msg['message'] = substr(trim($msg['message']), 7);
                preg_match_all("~=(.+?)=~is", $msg['message'], $matches);
                $mra->setStatus($matches[1][0], $matches[1][1], $matches[1][2]);
                $mra->sendMessage($msg['from'], 'Получен запрос на изменение статуса.');
            }
        }
    }


    if(isset($msg['type']) && $msg['type'] != '')
    {
        if($msg['type'] == 'userinfo')
        {
            if(isset($msg['error']) && $msg['error'] != false) $reply = $msg['error'];
            else
            {
                $reply = array();
                foreach($msg['results'] as $fild => $val)
                    $reply[] = $fild.': '.$val;

                $reply = join("\n", $reply);
            }

            $mra->sendMessage($admin_email, $reply);
        }
    }

    sleep(1); // спим 1 секунду
}

$mra->disconnect(); // отключение от сервера

file_put_contents('scr.log', ob_get_contents()); // запись вывода в файл
ob_flush(); // вывод на экран
?>